// package cn.ruleengine.web.controller;
//
// import cn.ruleengine.web.vo.BaseResult;
// import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
// import com.alibaba.cloud.nacos.registry.NacosRegistration;
// import com.alibaba.cloud.nacos.registry.NacosServiceRegistry;
// import io.swagger.annotations.Api;
// import io.swagger.annotations.ApiOperation;
// import lombok.extern.slf4j.Slf4j;
// import org.springframework.web.bind.annotation.GetMapping;
// import org.springframework.web.bind.annotation.RestController;
//
// import javax.annotation.Resource;
//
// /**
//  * @description
//  * @author 地星
//  * @since 2021/5/25 12:11
//  */
// @Slf4j
// @RestController
// @Api(value = "nacos控制器", tags = "nacos控制器")
// public class NacosController {
//
//     @Resource
//     private NacosRegistration nacosRegistration;
//     @Resource
//     private NacosDiscoveryProperties nacosDiscoveryProperties;
//     @Resource
//     private NacosServiceRegistry nacosServiceRegistry;
//
//     /**
//      * 服务注册接口
//      *
//      * @return
//      */
//     @GetMapping(value = "/nacos/register")
//     @ApiOperation(value = "nacos服务上线")
//     public String registerInstance() {
//         String serviceName = nacosDiscoveryProperties.getService();
//         String groupName = nacosDiscoveryProperties.getGroup();
//         String clusterName = nacosDiscoveryProperties.getClusterName();
//         String ip = nacosDiscoveryProperties.getIp();
//         int port = nacosDiscoveryProperties.getPort();
//
//         log.info("register from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", serviceName, groupName, clusterName, ip, port);
//         try {
//             nacosServiceRegistry.register(nacosRegistration);
//         } catch (Exception e) {
//             log.error("register from nacos error", e);
//             return "error";
//         }
//         return "success";
//     }
//
//     /**
//      * 服务注销接口
//      *
//      * @return
//      */
//     @GetMapping(value = "/nacos/deregister")
//     @ApiOperation(value = "nacos服务下线")
//     public String deregisterInstance() {
//         String serviceName = nacosDiscoveryProperties.getService();
//         String groupName = nacosDiscoveryProperties.getGroup();
//         String clusterName = nacosDiscoveryProperties.getClusterName();
//         String ip = nacosDiscoveryProperties.getIp();
//         int port = nacosDiscoveryProperties.getPort();
//         log.info("deregister from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", serviceName, groupName, clusterName, ip, port);
//         try {
//             nacosServiceRegistry.deregister(nacosRegistration);
//
//         } catch (Exception e) {
//             log.error("deregister from nacos error", e);
//             return "error";
//         }
//         return "success";
//     }
//
//     @GetMapping(value = "/nacos/switchStatus")
//     @ApiOperation(value = "nacos服务切换状态")
//     public String switchStatus() {
//         String serviceName = nacosDiscoveryProperties.getService();
//         String groupName = nacosDiscoveryProperties.getGroup();
//         String clusterName = nacosDiscoveryProperties.getClusterName();
//         String ip = nacosDiscoveryProperties.getIp();
//         int port = nacosDiscoveryProperties.getPort();
//         log.info("deregister from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", serviceName, groupName, clusterName, ip, port);
//         try {
//             Object status = nacosServiceRegistry.getStatus(nacosRegistration);
//             String currentStatus = status != null ? (status.toString().equals("UP") ? "UP" : "DOWN") : "DOWN";
//             switch (currentStatus) {
//                 case "UP":
//                     currentStatus = "DOWN";
//                     break;
//                 case "DOWN":
//                     currentStatus = "UP";
//                     break;
//                 default:
//                     return "DOWN";
//             }
//             nacosServiceRegistry.setStatus(nacosRegistration, currentStatus);
//         } catch (Exception e) {
//             log.error("deregister from nacos error", e);
//             return "error";
//         }
//         return "success";
//     }
//
//     /**
//      * 服务状态获取接口
//      *
//      * @return
//      */
//     @GetMapping(value = "/nacos/getStatus")
//     @ApiOperation(value = "nacos服务状态获取")
//     public BaseResult<String> getStatus() {
//         String serviceName = nacosDiscoveryProperties.getService();
//         String groupName = nacosDiscoveryProperties.getGroup();
//         String clusterName = nacosDiscoveryProperties.getClusterName();
//         String ip = nacosDiscoveryProperties.getIp();
//         int port = nacosDiscoveryProperties.getPort();
//         log.info("getStatus from nacos, serviceName:{}, groupName:{}, clusterName:{}, ip:{}, port:{}", serviceName, groupName, clusterName, ip, port);
//         Object status = nacosServiceRegistry.getStatus(nacosRegistration);
//         String currentStatus = status != null ? (status.toString().equals("UP") ? "UP" : "DOWN") : "DOWN";
//         if (currentStatus.equals("UP")) {
//             return BaseResult.success("服务已在线");
//         } else if (currentStatus.equals("DOWN")) {
//             throw new IllegalArgumentException("服务已下线");
//
//         }else {
//             return BaseResult.success("未知");
//         }
//     }
//
// }
